export { };

// 泛型： 可以使用泛型来创建可*重用*的组件

// 该函数功能传递一个参数进来，返回这个参数
// 泛型其实就是传递类型参数
function idenify<T>(params: T): T {
	return params
}

const id1 = idenify<string>('123')
const id2 = idenify<number>(111)
const id3 = idenify<boolean>(true)


interface Person<T> {
	name: string
	age: T
}


const o: Person<number> = {
	name: '张三',
	age: 18
}



const o1: Person<string> = {
	name: '张三',
	age: '18'
}

class Animal<T, U, Y = '公' | '母'> {
	name: T
	age: U
	sex: Y
	constructor(name: T, age: U, sex: Y) {
		this.name = name
		this.age = age
		this.sex = sex
	}
}
const a1 = new Animal<string, number>('小猫', 2, '公')
const a2 = new Animal<string, string>('小狗', '5', '母')